492. Латинская свинья
Вы решили, что кодирование текста PGP алгоритмом не достаточно надежно.
Поэтому было решено перед запуском шифрования PGP преобразовать текст по методу
латинской свиньи.
Вход. Текст состоит из произвольного числа строк. Каждая
строка содержит одно или несколько слов. Словом называется последовательность
заглавных и прописных латинских букв. Следующие правила преобразовывают текст
по методу латинской свиньи (Pig Latin):
1. К словам, которые
начинаются с гласной буквы (a, e, i, o, u и их заглавных эквивалентов), следует
приписать окончание “ay”. Слово “apple” будет преобразовано в “appleay”;
2. Если слово
начинается с согласной буквы, то первую букву следует удалить и приписать в
конец слова. Затем дописать окончание “ay”. Слово “hello” будет преобразовано в
“ellohay”;
3. Никакие другие
символы текста не изменяются.
Выход.
Преобразовать входной текст по методу латинской свиньи.
This is the input.
hisTay isay hetay inputay.
обработка текста
Читаем последовательно
буквы текста. Преобразовываем слова, начинающиеся с гласной и согласной буквы
согласно описанным правилам. Буквы, не являющиеся символами латинского
алфавита, выводим не обрабатывая.
Функции isvowel(c) и isconsonant(c)
возвращают истину (единицу), если входной символ c является
соответственно гласной (согласной) буквой.
int isvowel(char c)
{
if ((c == 'A') || (c == 'a') ||
(c == 'E') || (c == 'e') ||
(c == 'I') || (c == 'i') ||
(c == 'O') || (c == 'o') ||
(c == 'U') || (c == 'u')) return 1;
return 0;
}
int isconsonant(char c)
{
if (!isalpha(c)) return 0;
return (!isvowel(c));
}
Читаем текущий символ c. Если он не является буквой, то выводим его и продолжим
процесс обработки текста дальше. Если первый символ слова – буква, то первые
два правила, приведенные в условии задачи, можно применять так:
1. Если первый символ слова
– гласная буква, то выводим его;
2. Последовательно читаем и
выводим символы текста, пока они являются буквами латинского алфавита;
3. Если первый символ слова
– согласная буква, то выводим его;
4. Выводим окончание “ay”;
В завершение следует
вывести последний прочитанный символ ch, который не является буквой.
while(scanf("%c",&c) == 1)
{
if (!isalpha(c))
{
printf("%c",c); continue;
}
if(isvowel(c)) printf("%c",c);
while(scanf("%c",&ch),isalpha(ch))
printf("%c",ch);
if (isconsonant(c)) printf("%c",c);
printf("ay");
printf("%c",ch);
}